<< Dot-Ersatz
>> Shellpipe

Der Queue-Handler PIPE:

In AmigaOS 2.04 wurde ein neuer Handler eingeführt, der es erlaubt, Daten zwischen verschiedenen Programmen auszutauschen. Dieser Handler heißt `L:Queue-Handler', ist aber besser als `PIPE:' bekannt.

`PIPE:' implementiert eine echte, Unix-artige Pipe, mit der man die Standardausgabe eines Programms als Standardeingabe eines anderen Programms verwenden kann. Es ist auch möglich, mehrere Programme über mehrere Pipes gleichzeitig zu verketten. Pipes brauchen weniger RAM für temporäre Dateien, und der Zugriff ist schneller.

Allerdings unterscheidet sich `PIPE:' von Unix-Pipes in zwei wesentlichen Punkten:

  1. Es handelt sich um ein Device; die Ein- und Ausgabe von Programmen muß also nicht unbedingt eine Datei sein, obwohl das meistens der Fall ist. Man kann auch `PIPE:' wie andere Devices verwenden, aber natürlich weder Directories lesen noch Seek-artige Zugriffe durchführen.
  2. Es gibt keine Flush-Operation. Wenn nicht alle Daten gelesen wurden, die in `PIPE:' geschrieben wurden, dann bleiben sie stehen, bis sie evtl. von einem anderen Programm gelesen werden. Man muß also Pipes immer leeren, bevor man sie schließt.
  3. Aus demselben Grund kann ein Programm blockiert werden, wenn es die interne Puffergröße überschreibt. Auch dies wird durch rechtzeitiges Leeren der Pipe vermieden.

Der Handlername von PIPE: ist vollständig `PIPE:name/bufsize/bufnum', wobei `name' den verwendeten Pipekanal identifiziert und eindeutig sein sollte. Durch verschiedene Namen kann man also gleichzeitig mehrere Pipe-Kanäle öffnen. Die optionalen Argumente bufsize und bufnum geben die Größe und Anzahl der verwendeten Datenpuffer an. Meist schreibt man einfach `PIPE:name', die Vorgabegröße ist dann 4096 Bytes und die Anzahl unbegrenzt.

Osma Ahvenlampi (Osma.Ahvenlampi@hut.fi)



<< Dot-Ersatz >> Shellpipe